package com.woniushop.service.imple;

import java.util.List;

import com.woniushop.dao.GoodsTypeDAO;
import com.woniushop.dao.imple.GoodsTypeDAOImple;
import com.woniushop.entity.GoodsType;
import com.woniushop.entity.PageBean;
import com.woniushop.service.GoodsTypeService;

/**
 * 商品类别业务逻辑接口的实现类
 * 
 * @author 崔新雄
 *
 */
public class GoodsTypeServiceImple implements GoodsTypeService {

	private GoodsTypeDAO goodsTypeDAO = new GoodsTypeDAOImple();

	/**
	 * 检查该商品类别是否存在
	 * 
	 * @param gtname
	 * @return
	 */
	@Override
	public Boolean checkGtname(String gtname) {
		return goodsTypeDAO.findOne(gtname) == null;
	}

	/**
	 * 增加商品类别
	 * 
	 * @param goodsType
	 */
	@Override
	public void add(GoodsType goodsType) {
		goodsType.setGtstate(1);
		goodsTypeDAO.add(goodsType);
	}

	/**
	 * 根据条件分页查询商品类别数据
	 * 
	 * @param pageBean
	 * @param goodsType
	 * @return
	 */
	@Override
	public List<GoodsType> findByPage(PageBean pageBean, GoodsType goodsType) {
		// 完善pageBean信息
		Integer totalNum = goodsTypeDAO.count(goodsType);
		pageBean.setTotalNum(totalNum);

		Integer pageSize = pageBean.getPageSize();
		Integer totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1;
		totalPage = totalPage == 0 ? 1 : totalPage;
		pageBean.setTotalPage(totalPage);

		// 如果页码超过范围，则设为最后一页
		if (pageBean.getPage() > totalPage) {
			pageBean.setPage(totalPage);
		}

		// 查询用户数据
		List<GoodsType> list = goodsTypeDAO.findByPage(pageBean.getPage(), pageSize, goodsType);

		pageBean.setNumsOfCurrPage(list.size());

		return list;
	}

	/**
	 * 修改商品类别状态
	 * 
	 * @param gtid
	 * @param gtstate
	 */
	@Override
	public void changeGtstate(Integer gtid, Integer gtstate) {
		GoodsType goodsType = goodsTypeDAO.findOne(gtid);
		goodsType.setGtstate(gtstate);
		goodsTypeDAO.update(goodsType);
	}

	/**
	 * 根据gtid查找商品类别
	 * 
	 * @param gtid
	 * @return
	 */
	@Override
	public GoodsType findOne(Integer gtid) {
		return goodsTypeDAO.findOne(gtid);
	}

	/**
	 * 更新商品类别信息
	 * 
	 * @param goodsType
	 */
	@Override
	public void update(GoodsType goodsType) {
		goodsType.setGtstate(1);
		goodsTypeDAO.update(goodsType);
	}

	/**
	 * 获得符合条件的所有商品数据
	 * 
	 * @param goodsType
	 * @return
	 */
	@Override
	public List<GoodsType> findAll(GoodsType goodsType) {
		Integer totalNum = goodsTypeDAO.count(goodsType);
		return goodsTypeDAO.findByPage(1, totalNum, goodsType);
	}

}
